Esqueleto básico das 4 Operações
Executar o script abaixo no banco de dados MySQL para criar a tabela usuário;
-- Cria o banco de dados
CREATE DATABASE IF NOT EXISTS teste_db;
-- Seleciona o banco
USE teste_db;
-- Cria a tabela usuario
CREATE TABLE IF NOT EXISTS usuario (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL,
data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Copiar esta versão da aplicação JAVA para o VsCode e testar a sua execução.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class App {
public static void main(String[] args) {
//string Conexao com o banco
//mysql Definicação do SGBD utilizado
//localhost O endereço do Servidor onde o banco de dados está hospedado
//3306 A porta tcp do banco de dados
//teste_db Nome do banco de dados
final String STR_CONNECTION = "jdbc:mysql://localhost:3306/teste_db";
//Usuario para conectar no banco de dados
final String USER = "root";
//Senha para conectar no banco de dados
final String PASSWORD = "12345678";
//Variavel para armazenar a conexao estabelecida com o banco de dados
Connection conn = null;
//Comandos preparados para evitar SQL Injection
PreparedStatement psInsert = null;
PreparedStatement psSelect = null;
PreparedStatement psUpdate = null;
PreparedStatement psDelete = null;
//Variavel para armazenar as respostas do banco de dados
ResultSet rs = null;
//Variavel para armazenar o id gerado no bando de dados
int idGerado = 0;
try {
String nome = "Pedro Paulo";
String email = "pedro@email.com";
//Cria a conexão com o banco de dados e armazena em conn
conn = DriverManager.getConnection(STR_CONNECTION, USER, PASSWORD);
System.out.println("Conexão ao banco de dados realizada com sucesso!");
// 1. INSERT
String insertSql = "INSERT INTO usuario (nome, email) VALUES (?, ?)";
// Montar a consulta preparada para evitar SQL Injection
// Statement.RETURN_GENERATED_KEYS para que diz para o banco de dados devolver o id gerado na inserção (chave primária)
psInsert = conn.prepareStatement(insertSql, Statement.RETURN_GENERATED_KEYS);
//Substitui o primeiro ? por pedro
psInsert.setString(1, nome);
//Substitui o segundo ? por pedro@email.com
psInsert.setString(2, email);
//Envia o SQL gerado para o banco de dados realizar o insert
psInsert.executeUpdate();
//Obter o id gerado como chave primaria na tabela de usuario
rs = psInsert.getGeneratedKeys();
//Verifica se existe um id e armazena na variavel
if (rs.next())
idGerado = rs.getInt(1);
System.out.println("INSERT realizado com sucesso!");
System.out.println("O(a) " + nome + " foi inserido no banco com ID: " + idGerado);
// 2. SELECT
String selectSql = "SELECT * FROM usuario";
//Executa a consulta no banco de dados
psSelect = conn.prepareStatement(selectSql);
//Guarda em rs o resultado da consulta realizado no banco de dados (linhas e colunas)
rs = psSelect.executeQuery();
System.out.println("Resultado da consulta:");
//Existe alguma linha que foi retornada do banco de dados
while (rs.next()) {
//rs.getInt("id") obtem a coluna id que tem valor inteiro retornada do banco de dados
//rs.getString("nome") obtem a coluna nome que tem valor string retornada do banco de dados
System.out.println(
"ID: " + rs.getInt("id") +
", Nome: " + rs.getString("nome") +
", Email: " + rs.getString("email") +
", Data Cadastro: " + rs.getString("data_criacao")
);
}
// 3. UPDATE usando ID
String novoEmail = "pedrof@email.com";
String updateSql = "UPDATE usuario SET email = ? WHERE id = ?";
//Prepara o SQL para receber as substiticoes evitando sql injection
psUpdate = conn.prepareStatement(updateSql);
//Realiza as substituicoes das ? pelo valor correto
psUpdate.setString(1, novoEmail);
psUpdate.setInt(2, idGerado);
//Executa o update no banco de dados
psUpdate.executeUpdate();
System.out.println("UPDATE realizado!");
// 4. DELETE usando ID
String deleteSql = "DELETE FROM usuario WHERE id = ?";
//Prepara o SQL para receber as substituicoes evitando sql injection
psDelete = conn.prepareStatement(deleteSql);
//Faz a substituicacao da ? pelo idGerado
psDelete.setInt(1, idGerado);
//Executa a operação de delete no banco de dados
psDelete.executeUpdate();
System.out.println("DELETE realizado!");
} catch (SQLException e) {
e.printStackTrace();
} finally {
//encerrar as conexões criadas e demais recursos
try {
if (rs != null) rs.close();
if (psInsert != null) psInsert.close();
if (psSelect != null) psSelect.close();
if (psUpdate != null) psUpdate.close();
if (psDelete != null) psDelete.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}